/* ======================================================================
**  qdlib.h
** ======================================================================
* UTF-8 encoded
*/

#include "qdlib.h"

//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
//тестовая функция для проверки работы с переменной из библиотеки
qint32 get_int_pp_0() //запрос состояний. За выделение памяти ответственнен вызывающий процесс.
{
	return value++;
}

//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
// 2008.05.10
// ushort *_log_file_name <-- в UTF16 кодированное имя.
qint32 init_0(ushort *_log_file_name) //инициация по описанию ini-файла...
{
	qDebug()<<"lib:init_0()::0020 started...";

	//имя файла куда будем скидывать логи. Критично.
    QString LogFileName=QString::fromUtf16(_log_file_name);
	if (LogFileName.isEmpty())
	  {
		LogFileName=QString("libqtsofarm_debugmsg.log");
	  };

	//далее - делаем так если нам нужно писать все debug-сообщения в файл:
	//Otpd_OpenFileForDebugMessages("libotpd_debugmsg.log"); //2008.04.09
    //2008.05.10 // TODO возможны проблемы с русским языком и с русскими путями. особенно под виндоус.

	Otpd_OpenFileForDebugMessages(LogFileName.toAscii().data()); // <-- здесь!
	// после этого всякое указание типа
	// qDebug()<<"lib:init_0()::0030 waiting for dispatcher ready...";
	// будет добавлять строку в файл


	// ну а дальше делаем все что хочецца.
	qDebug()<<"lib:init_0()::0047 Function GetObject executed!";

    return 0;//all ok
}

/* собственно фабрика но по сути думаю она не будет использоваться.
создание объектов для скрипта происходит через зарегистрированные функции внутри 
подключенного h-файла...*/
QObject* get_object(ushort *_name) //вернуть объект класса с заданным именем
	{
		//вне зависимости от всего, возвращаем один объект.
		//пока не знаю, будет ли доступен будут ил проблемы с этой ссылкой в основной программе, но пусть пока будет так...
		return new qdl_ChildProcess();
		//return f_qdroid_extention_class_constructor();
	}

/* регистратор класса */
int register_class(QScriptEngine *_QSEngine, QString ClassName)
	{
		return f_qdroid_extention_class_register(_QSEngine);
	}


//===========================================
/* Это должно быть определено в классе ::
		//это (ниже) нужно что бы можно было засунуть t_FileList в контейнер QList
    	// возможно так-же связано с работой QtScript движка - см функции после определения класса
    	// спец. настройки для QtScript (v 2008.11.25)
    	// Шаг 1 из 8
    	t_FileBot(const t_FileBot &other);
    	//это (ниже) нужно что бы можно было засунуть t_FileList в контейнер QList
    	// возможно так-же связано с работой QtScript движка - см функции после определения класса
    	// спец. настройки для QtScript (v 2008.11.25)
    	// Шаг 2 из 8
    	t_FileBot& operator=(const t_FileBot &other);
//*/
/*/
//нужно чтобы можно было передавать эти элементы как параметры в функции внутри QtScript
// спец. настройки для QtScript (v 2008.11.25)
// Шаг 3 из 8
Q_DECLARE_METATYPE(simple_bot*);



// спец. настройки для QtScript (v 2008.11.25)
// Шаг 4 из 8
static QScriptValue qdroid_t_FileBot_toScriptValue(QScriptEngine *engine, t_FileBot* const &in)
{ return engine->newQObject(in); }

// спец. настройки для QtScript (v 2008.11.25)
// Шаг 5 из 8
static void qdroid_t_FileBot_fromScriptValue(const QScriptValue &object, t_FileBot* &out)
{ out = qobject_cast<t_FileBot*>(object.toQObject()); }

// спец. настройки для QtScript (v 2008.11.25)
// Шаг 6 из 8
//конструктор для последующего его определения как new в скрипте
static QScriptValue qdroid_t_FileBot_constructor(QScriptContext *QSContext, QScriptEngine *QSEngine)
	{
		//t_BaseBot BaseBot;
		QScriptValue QtSObject;
		QtSObject=QSEngine->newQObject(new t_FileBot()); //
		//qsBaseBot=QSEngine->toScriptValue(BaseBot);
		return QtSObject;
	}
//*/

//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------

